import { getCarList, addCar, editCar, delCar } from "@/common/request"
let carlist = sessionStorage.getItem('carlist') ? JSON.parse(sessionStorage.getItem('carlist')):[]
// 一个模块就是一个对象！
export default {
    namespaced: true,  // 命名空间！
    // 模块里面的state是 函数，且返回对象！
    state:()=>({
        carlist: carlist
    }),
    getters:{
        carNum(state){
            let len =0;
            state.carlist.forEach(val => {
                len += val.num*1
            });
            return len;
        },
        totalPrice(state){
            let allprice = 0;
            state.carlist.forEach(val => {
                allprice += val.price*val.num
            });
            allprice *= 100
            return allprice.toFixed(2)
        }
    },
    mutations:{
        // 设置购物车列表数据！
        SETCARLIST(state,data){
            state.carlist = data;
            sessionStorage.setItem('carlist', JSON.stringify(data));
        },
        REMOVECARLIST(state){
            state.carlist = [];
            sessionStorage.removeItem('carlist');
        }
    },
    actions:{
        // 获取购物车数据！
        async get_car_list({commit}){
            let res = await getCarList();
            commit('SETCARLIST',res)
        },
        // 添加购物车
        async add_car({dispatch},data){
            console.log(data)
            await addCar(data.id,data.num)
            // 重新获取列表
            dispatch('get_car_list')
        },
        // 修改购物车
        async edit_car({ dispatch},data){
            await editCar(data.id, data.type)
            // 重新获取列表
            dispatch('get_car_list')
        },
        // 删除购物车
        async del_car({ dispatch }, id){
            await delCar(id)
            // 重新获取列表
            dispatch('get_car_list')
        }
    }
}